package com.cy.jdk8.lambda;


import org.testng.annotations.Test;

import java.util.function.Function;

// https://www.bilibili.com/video/BV1Gh41187uR
public class Lambda_BSite_Learn {

	// 可读性高 消灭嵌套地域


	// 2.Lambda表达式
	// 2.1 概述
	// Lambda是JDK8中一个语法糖。可以看成是一种语法糖，他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。
	// 让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。
	// 2.2 核心原则 可推到可省略
	// 2.3 基本格式 (参数列表)->{代码}

	@Test
	public void t2_3_0() {
		// 匿名内部类
		new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println("开始跑了");
			}
		}).start();

		// 接口 && 只有一个方法
		new Thread(() -> System.out.println("开始跑了")).start();
	}

	@Test
	public void t2_3_1() {
		System.out.println(
				typeConver((Function<String, String>) s -> s + "cy")
		);
	}

	public static <R> R typeConver(Function<String, R> function) {
		String str = "1235";
		return function.apply(str);
	}

	// 2.4 省略规则
	// 参数类型可以省略
	// 方法体只有一句代码时大括号return和唯--句代码的分号可以省略
	// 方法只有一个参数时小括号可以省略




}
